  <?php
  class IndexController extends Zend_Controller_Action {
      protected $prawo;
      static $daneForm;
      
      public function init(){
         
        if (Zend_Auth::getInstance()->hasIdentity()){
          
        $idacc = Zend_Auth::getInstance()->getStorage()->read()->idacctype;
        $login = Zend_Auth::getInstance()->getStorage()->read()->login;
        $db = Zend_Db_Table::getDefaultAdapter();
        $query = $db->select()
                ->from('acctype', 'type')
                ->where('idacctype = ?', $idacc);
        $result = $db->fetchRow($query);
        
         
        
        $role = $result['type'];
        $this->view->login = $login;
        $this->view->rola = $role;
        if ($this->view->rola == "admin") {
            if($_SESSION['param'] == 'filmy'){
                $this->_helper->layout->setLayout('layoutfilmyadmin');
            }else{
                $this->_helper->layout->setLayout('layoutadmin');
            }
        } else if($this->view->rola == "zwykly" || $this->view->rola == "premium"){
            if($_SESSION['param'] == 'filmy'){
                $this->_helper->layout->setLayout('layoutfilmyuzyt');
            }else{
                $this->_helper->layout->setLayout('layoutuzyt');
            }
                
        } else{
             if($_SESSION['param'] == 'filmy'){
                $this->_helper->layout->setLayout('layoutfilmy');
            }else{
                 $this->_helper->layout->setLayout('layout');
            }
            }
        }
        

          $this->form = new Application_Form_LoginForm();
          $this->form_rejestr = new Application_Form_RejestracjaForm();
          $this->form_szukaj = new Application_Form_SzukajForm();
          $this->view->form=$this->form;
          $this->prawo = new Application_Model_Auth_Uzytkownicy();
                   
      }
      
      
     function indexAction() {
         $this->view->title = "Witaj na Stonie Głównej";
         $_SESSION['param'] = 'zwykly';
         $db = Zend_Db_Table::getDefaultAdapter();
         $select = $db->select();
         $select->from('movie');
         $select->order('idmovie');
         $select->limit(0,3);
         $wynik = $db->fetchAll($select);
         $this->view->wynik = $wynik;
     }
     
     function logowanieAction() {
         if ($this->_request->isPost()) {
             self::$daneForm = $this->_request->getPost();
             if ($this->form->isValid(self::$daneForm)){
                 return $this->_forward('next');
             } else {
                 $this->form->populate(self::$daneForm);
             }
         }
         $this->view->form = $this->form;
         
     }
      
     public function nextAction(){
          //Uniemożliwa wejście przez podanie bezpośrednie URL
          $request = $this->getRequest();
          if( $request->getParam('controller') == $request->getControllerName()
             && $request->getParam('action') == $request->getActionName()) {
             $this->_helper->redirector->gotoRouteAndExit(array(), null, true);
             // przekierowanie do akcji index kontrolera index
          }
         if ($this->_request->isPost()){
             $auth = Zend_Auth::getInstance();
             //utworzenie adaptera ZendAuth bazy danych
             $authAdapter =
                   new Zend_Auth_Adapter_DbTable($this->prawo->getAdapter(),'user');
                         //ustawienie w tabeli 'uprawnienia'  pól do uwierzytelnienia
             $authAdapter->setIdentityColumn('login')
                         ->setCredentialColumn('password');
 
             //wstawienie wartości z formularza
             $password = sha1(self::$daneForm['password']);
             $authAdapter->setIdentity(self::$daneForm['login']);
             $authAdapter->setCredential($password);
             $result = $auth->authenticate($authAdapter);
             if ($result->isValid()){
                 // przechowywany obiekt zawierający dane z wyjątkiem hasła
                 Zend_Auth::getInstance()->getStorage()
                            ->write($authAdapter->getResultRowObject(null, 'password'));
                           // przechowywany obiekt zawierający wymienione dane
                 //Zend_Auth::getInstance()->getStorage()->getStorage()
                 //         ->write($authAdapter->getResultRowObject(array('login','rola')));
 
                 //
                 //echo Zend_Auth::getInstance()->getStorage()->read()->rola;
                 $idacc= Zend_Auth::getInstance()->getStorage()->read()->idacctype;
                 $db = Zend_Db_Table::getDefaultAdapter();
                          $query = $db->select()
                            ->from('acctype','type')
                            ->where('idacctype = ?', $idacc);
                          $result= $db->fetchRow($query);
                          
                          $role=$result['type'];
                             
                     $this->_forward('index', 'index');
               
                 } else {
                     
               /*//  echo "haslo: ".$password." ". self::$daneForm['password']." ";
                 if ($result->getCode() == Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND) {
                     echo "Logowanie nie powiodło się - niepoprawna nazwa użytkownika";
                 }else if ($result->getCode() == Zend_Auth_Result::FAILURE_IDENTITY_AMBIGUOUS){
                     echo "Logowanie nie powiodło się - niejednoznaczna nazwa użytkownika";
                 }else if($result->getCode() == Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID){
                     echo "Logowanie nie powiodło się - niepoprawne hasło";
                 }else{
                     echo "Logowanie nie powiodło się - inny błąd podczas logowania";
                 }*/
                    $this->_redirect("index/logowanie");
                    
                 }
         }
      }
      public function logoutAction(){
          Zend_Auth::getInstance()->clearIdentity();
          $this->_helper->layout->setLayout('layout');
          $this->_forward('index');
      }
      
      
       function rejestracjaAction() {
         
         if ($this->_request->isPost()) {
             self::$daneForm = $this->_request->getPost();
             if ($this->form_rejestr->isValid(self::$daneForm)){
                 
                 $this->login = $this->form_rejestr->getValue('login');
                 $this->haslo = $this->form_rejestr->getValue('password');
                 $this->plec = $this->form_rejestr->getValue('gender');
                 $this->email = $this->form_rejestr->getValue('email');
                 
                 //sprawdzenie czy istnieje juz taki login w bazie
                  $db = Zend_Db_Table::getDefaultAdapter();
                          $querylogin = $db->select()
                            ->from('user','login')
                            ->where('login = ?',$this->login );
                            
                          $resultlogin= $db->fetchRow($querylogin);
                          
                          //srawdzenie czy istnieje juz taki email w bazie
                          $queryemail = $db->select()
                            ->from('user','email')
                            ->where('email = ?',$this->email );
                            
                          $resultemail= $db->fetchRow($queryemail);
                          
                          if($resultlogin && $resultemail){
                              echo "<p><h3>podana nazwa użytkownika jest już zarezerwowana, podaj inną nazwę!</h3></p>";
                              echo "<p><h3>Użytkownik o podanym adresie email już istnieje, podaj inny email!</h3></p>";
                              echo $this->form_rejestr;
                              return;
                          }else if($resultlogin){
                               echo "<p><h3>podana nazwa użytkownika jest już zarezerwowana, podaj inną nazwę!</h3></p>";
                                 // $this->form_rejestr->populate(self::$daneForm);
                                  echo $this->form_rejestr;
                                  return; 
                          }else if($resultemail){
                               echo "<p><h3>Użytkownik o podanym adresie email już istnieje, podaj inny email!</h3></p>";
                                 // $this->form_rejestr->populate(self::$daneForm);
                                  echo $this->form_rejestr;
                                  return; 
                          }
                          
                                          
                  $haslo=sha1(self::$daneForm['password']);
                  $user = new Application_Model_Auth_Uzytkownicy();
                  $user->addUser($this->login,$haslo,$this->plec,$this->email);
                 
                 $this->view->login = $this->login;
                 $this->view->haslo = $this->haslo;
                 $this->view->plec = $this->plec;
                 $this->view->email = $this->email;
                           
                 
                 return $this->_forward('porejestracji');
                 
             } else {
                 $this->form_rejestr->populate(self::$daneForm);
             }
         }
         $this->view->form_rejestr = $this->form_rejestr;
     
     }
     
 function porejestracjiAction() {
     //$request = $this->getRequest();
    // $spr = new Application_Model_Auth_Bezpieczenstwo();
    // $spr->prawadostepu($request);
                $this->view->title = "Zostales zarejestrowany";
                
 }
 
 
 function filmyAction() {
                
                $this->view->title = $this->_request->getParam('title');
                $this->view->akcja=$_SESSION['akcja'];
                //Zend_Debug::dump($this->_request);
                $_SESSION['param'] = 'filmy';
                                
                $wyswietlaniesd = new Application_Model_Movies_Filmy();
                $this->view->filmy=$wyswietlaniesd->filmytypgatunek($this->_request->getParam('idgenre'),$_SESSION['movietype']);
                
                if ($this->view->rola == "admin") {
            if($_SESSION['param'] == 'filmy'){
                $this->_helper->layout->setLayout('layoutfilmyadmin');
            }else{
                $this->_helper->layout->setLayout('layoutadmin');
            }
        } else if($this->view->rola == "zwykly" || $this->view->rola == "premium"){
            if($_SESSION['param'] == 'filmy'){
                $this->_helper->layout->setLayout('layoutfilmyuzyt');
            }else{
                $this->_helper->layout->setLayout('layoutuzyt');
            }
                
        } else{
             if($_SESSION['param'] == 'filmy'){
                $this->_helper->layout->setLayout('layoutfilmy');
            }else{
                 $this->_helper->layout->setLayout('layout');
            }
            }
                
 }
 
 
      
       public function naglowekAction() {
         $this->view->form_szukaj = $this->form_szukaj;
         $this->view->title="Świat Kina :)";
         $this->_helper->viewRenderer->setResponseSegment('naglowek');
     }
     
     public function naglowekzalogAction() {
         $this->view->form_szukaj = $this->form_szukaj;
         $this->view->title="Świat Kina :)";
         $this->_helper->viewRenderer->setResponseSegment('naglowekzalog');
     }
      
      public function naviAction()
     {

          if(Zend_Auth::getInstance()->hasIdentity()){
                $idacc = Zend_Auth::getInstance()->getStorage()->read()->idacctype;
                if($idacc == 2){
                    $navi = array(
                    array('tytul' => 'Strona Główna',
                       'kontroler' => 'index',
                       'akcja' => 'index'),
                    array('tytul' => 'Filmy',
                        'kontroler' => 'zalogowani',
                       'akcja' => 'filmysd'),
                    array('tytul' => 'Filmy HD',
                        'kontroler' => 'zalogowani',
                       'akcja' => 'filmyhdfree'),
                    array('tytul' => 'Seriale',
                        'kontroler' => 'zalogowani',
                       'akcja' => 'seriale'),
                    array('tytul' => 'Junior',
                        'kontroler' => 'zalogowani',
                       'akcja' => 'junior')
                   );
                    }else{
                        $navi = array(
                    array('tytul' => 'Strona Główna',
                       'kontroler' => 'index',
                       'akcja' => 'index'),
                    array('tytul' => 'Filmy',
                        'kontroler' => 'zalogowani',
                       'akcja' => 'filmysd'),
                    array('tytul' => 'Filmy HD',
                        'kontroler' => 'zalogowani',
                       'akcja' => 'filmyhd'),
                    array('tytul' => 'Seriale',
                        'kontroler' => 'zalogowani',
                       'akcja' => 'seriale'),
                    array('tytul' => 'Junior',
                        'kontroler' => 'zalogowani',
                       'akcja' => 'junior')
                   );
                    }

          //Uniemożliwa wejście przez podanie bezpośrednie URL
          $request = $this->getRequest();
          if( $request->getParam('controller') == $request->getControllerName()
             && $request->getParam('action') == $request->getActionName()) {
             $this->_helper->redirector->gotoRouteAndExit(array(), null, true);
             // przekierowanie do akcji index kontrolera index
          }
         $this->view->navigacja = $navi;
         $this->_helper->viewRenderer->setResponseSegment('navi');
     }else{
         $navi = array(
                    array('tytul' => 'Strona Główna',
                       'kontroler' => 'index',
                       'akcja' => 'index'),
                    array('tytul' => 'Filmy',
                        'kontroler' => 'zalogowani',
                       'akcja' => 'filmysd'),
                    array('tytul' => 'Filmy HD',
                        'kontroler' => 'zalogowani',
                       'akcja' => 'filmyhd'),
                    array('tytul' => 'Seriale',
                        'kontroler' => 'zalogowani',
                       'akcja' => 'seriale'),
                    array('tytul' => 'Junior',
                        'kontroler' => 'zalogowani',
                       'akcja' => 'junior')
                   );
                    }
         $this->view->navigacja = $navi;
         $this->_helper->viewRenderer->setResponseSegment('navi');
     }
     public function subnaviAction()
     {
         //Uniemożliwa wejście przez podanie bezpośrednie URL
          $request = $this->getRequest();
          if( $request->getParam('controller') == $request->getControllerName()
             && $request->getParam('action') == $request->getActionName()) {
             $this->_helper->redirector->gotoRouteAndExit(array(), null, true);
             // przekierowanie do akcji index kontrolera index
          }
          
           $sub = array(
          array('tytul' => 'Użytkownicy',
              'kontroler' => 'zalogowani',
             'akcja' => 'adminuzytkownicy'),
          array('tytul' => 'Filmy',
              'kontroler' => 'zalogowani',
             'akcja' => 'adminfilmy')          
        );
          
         $this->view->subnavi = $sub;
         $this->_helper->viewRenderer->setResponseSegment('subNavi');
     }
     
     public function subnavi2Action()
     {    
         //Uniemożliwa wejście przez podanie bezpośrednie URL
          $request = $this->getRequest();
          if( $request->getParam('controller') == $request->getControllerName()
             && $request->getParam('action') == $request->getActionName()) {
             $this->_helper->redirector->gotoRouteAndExit(array(), null, true);
             // przekierowanie do akcji index kontrolera index
          }
          
         
          $sub = array(
          array('tytul' => 'akcja',
              'kontroler' => 'index',
             'akcja' => 'filmy',
             'idgenre' => '1'),
          array('tytul' => 'dramat',
              'kontroler' => 'index',
             'akcja' => 'filmy',
              'idgenre' => '5'),
          array('tytul' => 'familijny',
              'kontroler' => 'index',
             'akcja' => 'filmy',
              'idgenre' => '7'),
          array('tytul' => 'fantasy',
              'kontroler' => 'index',
             'akcja' => 'filmy',
              'idgenre' => '8'),
          array('tytul' => 'horror',
              'kontroler' => 'index',
             'akcja' => 'filmy',
              'idgenre' => '10'),
          array('tytul' => 'komedia',
              'kontroler' => 'index',
             'akcja' => 'filmy',
              'idgenre' => '11'),
          array('tytul' => 'kryminał',
              'kontroler' => 'index',
             'akcja' => 'filmy',
              'idgenre' => '13'),
          array('tytul' => 'przygodowy',
              'kontroler' => 'index',
             'akcja' => 'filmy',
              'idgenre' => '17'),
          array('tytul' => 'romans',
              'kontroler' => 'index',
             'akcja' => 'filmy',
              'idgenre' => '18'),
          array('tytul' => 'sci-fi',
              'kontroler' => 'index',
             'akcja' => 'filmy',
              'idgenre' => '19'),
          array('tytul' => 'thriller',
              'kontroler' => 'index',
             'akcja' => 'filmy',
              'idgenre' => '21'),
          array('tytul' => 'western',
              'kontroler' => 'index',
             'akcja' => 'filmy',
              'idgenre' => '22'),
         );
          
         $this->view->subnavi2 = $sub;
         $_SESSION['subnavi2'] = $sub;
         $this->_helper->viewRenderer->setResponseSegment('subNavi2');
     }
 }